﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EONFULLSIN2.Services.Device
{

    /// <summary>
    /// Modbus通信服务接口
    /// </summary>
    public interface IModbusBaseServices : IDeviceBaseServices {
        /// <summary>
        /// 读寄存器数据
        /// </summary>
        /// <param name="slaveAddress">设备的地址或从站地址。Modbus 协议中的每个设备都有唯一的地址</param>
        /// <param name="startAddress">输入寄存器的起始地址。Modbus 输入寄存器地址通常从 0 开始，并且根据设备的不同，地址范围也会有所不同。</param>
        /// <param name="numberOfPoints">要读取的寄存器数量，表示从起始地址开始的寄存器数量</param>
        /// <returns></returns>
        Task<ushort[]> ReadInputRegistersAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints);

        /// <summary>
        /// 读写寄存器数据
        /// </summary>
        /// <param name="slaveAddress">设备的地址或从站地址。Modbus 协议中的每个设备都有唯一的地址</param>
        /// <param name="startAddress">输入寄存器的起始地址。Modbus 输入寄存器地址通常从 0 开始，并且根据设备的不同，地址范围也会有所不同。</param>
        /// <param name="numberOfPoints">要读取的寄存器数量，表示从起始地址开始的寄存器数量</param>
        /// <returns></returns>
        Task<ushort[]> ReadHoldingRegistersAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints);
    }


}
